ল্যাম্বডা এক্সপ্রেশন C++11 এ যুক্ত হওয়া একটি বৈশিষ্ট্য, যা ইনলাইন বা অ্যানোনিমাস ফাংশন তৈরি করতে ব্যবহৃত হয়। এটি বিশেষ করে ছোট ছোট ফাংশন বা কলব্যাক ফাংশন হিসেবে ব্যবহৃত হয়, যেখানে ফাংশনের নাম না দিয়ে সরাসরি ফাংশন ডিফাইন করা যায়। ল্যাম্বডা এক্সপ্রেশন কোডকে আরও সংক্ষিপ্ত এবং কার্যকর করে তোলে।
[capture_list] (parameters) -> return_type {
// function body
};
#include <iostream>
using namespace std;
int main() {
auto add = [](int a, int b) -> int {
return a + b;
};
cout << "Sum: " << add(5, 3) << endl;
return 0;
}
বর্ণনা:
add
নামে একটি ল্যাম্বডা এক্সপ্রেশন তৈরি করা হয়েছে, যা দুইটি int
প্যারামিটার গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।add(5, 3)
কল করলে ৫ এবং ৩ এর যোগফল প্রদান করবে।আউটপুট:
Sum: 8
ক্যাপচার লিস্টের মাধ্যমে ল্যাম্বডা এক্সপ্রেশন বাইরের ভ্যারিয়েবল অ্যাক্সেস করতে পারে। এর মাধ্যমে বিভিন্নভাবে বাইরের ভ্যারিয়েবল ব্যবহার করা যায়।
#include <iostream>
using namespace std;
int main() {
int x = 5;
int y = 10;
auto add = [x, &y]() {
// x কপি করা হয়েছে এবং y রেফারেন্স করা হয়েছে
cout << "Inside Lambda - x: " << x << ", y: " << y << endl;
y += 10;
};
add();
cout << "Outside Lambda - x: " << x << ", y: " << y << endl;
return 0;
}
বর্ণনা:
x
কে কপি করা হয়েছে এবং y
কে রেফারেন্স করে ব্যবহার করা হয়েছে।y
এর মান পরিবর্তন করতে পারে কারণ এটি রেফারেন্স হিসেবে পাস করা হয়েছে।আউটপুট:
Inside Lambda - x: 5, y: 10
Outside Lambda - x: 5, y: 20
ল্যাম্বডা এক্সপ্রেশন সাধারণত STL অ্যালগরিদম, যেমন std::for_each
, std::find_if
, std::sort
ইত্যাদির সাথে সহজে ব্যবহার করা যায়।
std::for_each
এর সাথে ল্যাম্বডা এক্সপ্রেশন#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> numbers = {1, 2, 3, 4, 5};
// ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে প্রতিটি মান প্রিন্ট করা
for_each(numbers.begin(), numbers.end(), [](int n) {
cout << n << " ";
});
cout << endl;
return 0;
}
আউটপুট:
1 2 3 4 5
#include <iostream>
using namespace std;
int main() {
auto multiply = [](int a, int b) {
return a * b;
};
cout << "Multiplication: " << multiply(4, 5) << endl;
return 0;
}
আউটপুট:
Multiplication: 20
for_each
, find_if
, sort
ইত্যাদি অ্যালগরিদমে সহজেই ছোট ছোট লজিক যোগ করা যায়।উপাদান | বর্ণনা |
---|---|
[capture_list] | বাইরের ভ্যারিয়েবল কীভাবে ব্যবহার হবে তা উল্লেখ করে |
(parameters) | ল্যাম্বডা এক্সপ্রেশনের ইনপুট প্যারামিটার |
-> return_type | রিটার্ন টাইপ উল্লেখ করতে ব্যবহৃত, তবে অনেক ক্ষেত্রেই এটি অপ্রয়োজনীয় |
function body | ফাংশনের কার্যাবলী উল্লেখ করা হয় |
ল্যাম্বডা এক্সপ্রেশন C++ প্রোগ্রামিংয়ে কোড সংক্ষিপ্ত এবং সহজ করে তোলে, বিশেষ করে ছোট ফাংশন বা কোলব্যাক হিসেবে এর ব্যবহার খুবই কার্যকর। C++11 এর এই বৈশিষ্ট্য প্রোগ্রামারদের জটিল কাজ সহজভাবে করতে সাহায্য করে।
common.read_more